Tengo un proyecto Node.js.
Quiero usar el paquete auto-bind @v5.0.0.
Las versiones anteriores a la v4, son de tipo ESM. entonces no se puede usar por require('') . pero mi proyecto Node.js se basa en módulos Commonjs. Así que no puedo usar la forma de import .
mi problema: utilicé la siguiente forma de usar este paquete:
const autoBind = (...args) => import('auto-bind').then(({default: autoBind}) => autoBind(...args)); pero el módulo de controller.js no envía este método de vinculación al módulo homeController.js .
quiero poner, auto-bind en el módulo controller.js , luego usarlo en el módulo homeController.js , por lo que, como resultado, puedo enviar un método de message al constructor de homeController :
el módulo homeController.js :
const controller = require('app/http/controllers/controller.js'); module.exports = new class homeController extends controller{ index(req,res){ res.send(this.message()); } message(){ return('<p> home!</p>'); } } el módulo controller.js :
const autoBind = (...args) => import('auto-bind').then(({default: autoBind}) => autoBind(...args)); module.exports = class controller { constructor(){ autoBind(this); } }cuando llamo a su dirección en el navegador, devuelve este error:
TypeError: Cannot read properties of undefined (reading 'message') nota: esto funciona con auto-bind@v1.2.0 sin ningún problema. pero su problema es por el tipo de ESM del módulo auto-bind . ¿Cómo puedo arreglar esto?